/*
 * Console.java - ScriptME
 * 
 * Copyright (c) 2009 Cesar Henriques <cesar at alttab.com.ar>.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * 
 * Based on FESI Project
 * 
 * Contributors:
 * 	Jean-Marc Lugrin - initial API and implementation
 * 	Cesar Henriques <cesar at alttab.com.ar> - J2ME Porting and Extensions
 */
package org.scriptme.ecmascript.gui;

import java.io.InputStream;
import java.io.PrintStream;

/**
 * Define the interface of the console interface.
 */
public interface Console {

	/**
	 * Get the stream consisting of characters typed by the user.
	 * 
	 * @return the console in
	 */
	InputStream getConsoleIn();

	/**
	 * Get the stream to which to print characters to be displayed on the
	 * console.
	 * 
	 * @return the console out
	 */
	PrintStream getConsoleOut();

	/**
	 * Clear the console content.
	 */
	void clear();

	/**
	 * Release the console resources.
	 */
	void dispose();

	/**
	 * Inform if editing is supported.
	 * 
	 * @return true, if supports editing
	 */
	boolean supportsEditing();

	/**
	 * Create a new editing window for the specified file.
	 * 
	 * @param fileName
	 *            the file name
	 */
	void createEditor(String fileName);

	/**
	 * Display the about information.
	 */
	void displayAbout();

	/**
	 * Display the
	 * 
	 * @help text information.
	 */
	void displayHelpText();

	/**
	 * Display the help window.
	 */
	void displayHelpWindow();
}
